package org.i1510.spider.utils.spider.parser;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import org.i1510.common.utils.StringUtils;
import org.i1510.spider.bean.SysSpiderRuleBean;
import org.i1510.spider.utils.spider.model.FetchedPage;
import org.i1510.spider.utils.spider.queue.VisitedSpiderRuleQueue;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;

/**
 * @author Administrator
 *	对于网站http://segmentfault.com/ 的数据匹配
 *http://segmentfault.com/questions/newest?page=1
 */
public class ContentParser2 {
	/**
	*@Author Rambo
	*@Desc：匹配源文件的数据操作
	*@param fetchedPage 页面源文件
	*@param sysSpiderRuleBean 待取列表
	*@return TODO
	*@Version  ContentParser2.java,v 1.1 2014-9-30 下午3:01:16 
	*/
	public List<Map> parse(FetchedPage fetchedPage,SysSpiderRuleBean sysSpiderRuleBean){
		List<Map> list = new ArrayList<Map>();
		Document doc = Jsoup.parse(fetchedPage.getContent());
		StringBuffer tag = new StringBuffer();
		// 如果当前页面包含目标数据
		if(doc.getElementsByClass("stream-list question-stream") != null){
			Elements els_list_item = doc.getElementsByClass("stream-list__item");			
			for (Element el_list_item : els_list_item) {
				Map map = new HashMap();
				Elements els_summary = el_list_item.getElementsByClass("summary");
				if( els_summary!= null && els_summary.size() >= 1){
					//标题
					Elements els_title = els_summary.get(0).getElementsByClass("title");
					if(els_title!= null && els_title.size() >= 1){
						map.put("title", els_title.get(0).getElementsByTag("a").text());
						map.put("href", "http://segmentfault.com"+els_title.get(0).getElementsByTag("a").attr("href"));
					}
					//标签
					Elements els_tag = els_summary.get(0).getElementsByClass("taglist--inline");
					if(els_tag!= null && els_tag.size() >= 1){
						Elements els_tagPopup = els_tag.get(0).getElementsByClass("tagPopup");
						for (Element el_tagPopup : els_tagPopup) {
							tag.append(";"+el_tagPopup.getElementsByTag("a").text());				
						}
						
					}
					map.put("tag",StringUtils.subStringAfter(tag.toString(), ";", 1) );
					tag.delete(0, tag.length());
					
					
					
				}
				list.add(map);
				
//				System.out.println("输出："+map);
			}		
		}
		
		
		// 将URL放入已爬取队列
		VisitedSpiderRuleQueue.addElement(sysSpiderRuleBean);
//		System.out.println("输出 List："+list);
		return list;
	}
	
	
}
